package com.A21.GuoSai.demo.service_entity.utils;

import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;

public class MyTypeUtils {

    public static Object stringToNullableTarget(String string, Class<?> t) throws Exception {
        return string == null ? null : t.getConstructor(String.class).newInstance(string);
    }


    public static Object stringToTarget(String string, Class<?> t) throws Exception {
        boolean nullOrEmpty = StringUtils.isEmpty(string);
        Number value = 0;

        if(string.contains("\""))string=string.replace("\"","");

        if(String.class.equals(t)) return string;
        else if(Number.class.isAssignableFrom(t))value=Double.parseDouble(string);

        if (Double.class.equals(t)) {
            return nullOrEmpty ? 0 : value.doubleValue();
        } else if (Long.class.equals(t)) {
            return nullOrEmpty ? 0 : value.longValue();
        } else if (Integer.class.equals(t)) {
            return nullOrEmpty ? 0 : value.intValue();
        } else if (Float.class.equals(t)) {
            return nullOrEmpty ? 0 : value.floatValue();
        } else if (Short.class.equals(t)) {
            return nullOrEmpty ? 0 : value.shortValue();
        } else if (Boolean.class.equals(t)) {
            return nullOrEmpty ? 0 : Boolean.parseBoolean(string);
        } else if (BigDecimal.class.equals(t)) {
            return nullOrEmpty ? 0 : new BigDecimal(value.doubleValue());
        } /*else if (Number.class.isAssignableFrom(t)) {
            return t.getConstructor(String.class).newInstance(nullOrEmpty?"0":string);
        }    else {
            return nullOrEmpty ? "" : t.getConstructor(String.class).newInstance(string);
        }*/
        return value;
    }

}

